#pragma region  【算法7 - 3】希尔排序的算法 
void ShellSort(datatype R[], int n, int d[], int t)
{ //按增量序列d[0], d[1]… d[t-1]对排序表R[1]..R[n]进行希尔排序, n是记录个数
    int i, j, k, h;
    for (k = 0; k < t; k++)
    {
        h = d[k]; //本趟的增量
        for (i = h + 1; i <= n; i++)
            if (R[i].key < R[i - h].key) //小于时，需插入有序表
            {
                R[0] = R[i]; //存放待插入的记录
                for (j = i - h; j > 0 && R[0].key < R[j].key; j = j - h)
                    R[j + h] = R[j]; //记录后移
                R[j + h] = R[0];     //插入到正确位置
            }
    }
}
#pragma endregion